//package com.zyf.cloud.common.utils;
//
//import com.bonade.common.exception.DataParseException;
//import org.apache.commons.lang3.StringUtils;
//
//import java.text.ParseException;
//import java.text.ParsePosition;
//import java.text.SimpleDateFormat;
//import java.util.*;
//
///**
// * 日期操作辅助类
// *
// * @author ShenHuaJie
// * @version $Id: DateUtil.java, v 0.1 2014年3月28日 上午8:58:11 ShenHuaJie Exp $
// */
//public final class DateUtil {
//
//    private static final long ONE_MINUTE = 60;
//    private static final long ONE_HOUR = 3600;
//    private static final long ONE_DAY = 86400;
//    private static final long ONE_MONTH = 2592000;
//    private static final long ONE_YEAR = 31104000;
//    /**
//     * 一天的开始时间点 00:00:00
//     */
//    public static String START_TIME = " 00:00:00";
//
//    /**
//     * 一天的结束时间点 23:59:59
//     */
//    public static String END_TIME = " 23:59:59";
//
//    private DateUtil() {
//    }
//
//    /**
//     *  判断时间 是否在今天范围内
//     * @param dateTime
//     * @return
//     */
//    public static boolean dateInToday(Date dateTime) {
//        boolean flag = false;
//        //获取当前系统时间
//        long longDate = System.currentTimeMillis();
//        Date nowDate = new Date(longDate);
//        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//        String format = dateFormat.format(nowDate);
//        String subDate = format.substring(0, 10);
//        //定义每天的24h时间范围
//        String beginTime = subDate + " 00:00:00";
//        String endTime = subDate + " 23:59:59";
//        Date paseBeginTime = null;
//        Date paseEndTime = null;
//        try {
//            paseBeginTime = dateFormat.parse(beginTime);
//            paseEndTime = dateFormat.parse(endTime);
//        } catch (ParseException e) {
//        }
//        if(dateTime.after(paseBeginTime) && dateTime.before(paseEndTime)) {
//            flag = true;
//        }
//        return flag;
//
//    }
//
//    /**
//     * 日期格式
//     **/
//    public interface DATE_PATTERN {
//        String HHMMSS = "HHmmss";
//        String HH_MM_SS = "HH:mm:ss";
//        String YYYYMMDD = "yyyyMMdd";
//        String YYYY_MM_DD = "yyyy-MM-dd";
//        String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
//        String YYYYMMDDHHMMSSS = "yyyyMMddHHmmssS";
//        String YYYYMMDDHHMMSSSSS = "yyyyMMddHHmmssSSS";
//        String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
//        String YYYY_MM_DD_HH_MM_SS_SSS = "yyyy-MM-dd HH:mm:ss.SSS";
//        String YYYY_MM_DD_KK_MM_SS_AM = "yyyy-MM-dd KK:mm:ss a";
//        String YYYY_MM_DD_HHMMSS_SSS = "yyyy-MM-dd_HHmmss_SSS";
//        String YYYY_MM_DDTHHMMSS_SSSZ = "yyyy-MM-dd'T'HH:mm:ss.SSS Z";
//        String YYYY_MM_DD_2 = "yyyy/MM/dd";
//        String PARSE_PATTERNS[] = {YYYY_MM_DD_HH_MM_SS, YYYYMMDD, YYYY_MM_DD_2, YYYYMMDDHHMMSS,
//                YYYY_MM_DD_HH_MM_SS_SSS, YYYY_MM_DDTHHMMSS_SSSZ, YYYYMMDDHHMMSSSSS, YYYY_MM_DD_KK_MM_SS_AM,
//                YYYY_MM_DD_HHMMSS_SSS, YYYYMMDDHHMMSSS,};
//    }
//
//    class SplitDate {
//        private String startDate;
//        private String endDate;
//
//        public String getStartDate() {
//            return startDate;
//        }
//
//        public void setStartDate(String startDate) {
//            this.startDate = startDate;
//        }
//
//        public String getEndDate() {
//            return endDate;
//        }
//
//        public void setEndDate(String endDate) {
//            this.endDate = endDate;
//        }
//    }
//
//    static public Date parseToDate(String s) {
//        if (StringUtils.isEmpty(s)) {
//            return null;
//        }
//        ParsePosition pos = new ParsePosition(0);
//        SimpleDateFormat sdf = new SimpleDateFormat(DATE_PATTERN.YYYY_MM_DD);
//        for (int i = 0; i < DATE_PATTERN.PARSE_PATTERNS.length; i++) {
//            pos.setIndex(0);
//            Date date = sdf.parse(s, pos);
//            if (date != null && pos.getIndex() == (s).length()) {
//                return date;
//            }
//            sdf.applyPattern(DATE_PATTERN.PARSE_PATTERNS[i]);
//        }
//        return null;
//    }
//
//    public static final String Tformat(String date) {
//        date = date.replace("Z", " UTC");// 注意是空格+UTC
//        SimpleDateFormat format = new SimpleDateFormat(DATE_PATTERN.YYYY_MM_DDTHHMMSS_SSSZ);// 注意格式化的表达式
//        Date d = new Date();
//        try {
//            d = format.parse(date);
//        } catch (ParseException e) {
//            throw new DataParseException("时间格式转化错误");
//        }
//        return format(d, "yyyy-MM-dd HH:mm:ss");
//    }
//
//    /**
//     * 格式化日期
//     *
//     * @param date
//     * @return
//     */
//    public static final String format(Object date) {
//        return format(date, DATE_PATTERN.YYYY_MM_DD);
//    }
//
//    /**
//     * 格式化日期
//     *
//     * @param date
//     * @param pattern
//     * @return
//     */
//    public static final String format(Object date, String pattern) {
//        if (date == null) {
//            return null;
//        }
//        if (pattern == null) {
//            return format(date);
//        }
//        return new SimpleDateFormat(pattern).format(date);
//    }
//
//    /**
//     * 获取当前日期字符串
//     *
//     * @return
//     */
//    public static final String getDate() {
//        return format(new Date());
//    }
//
//    /**
//     * 获取当前日期时间字符串
//     *
//     * @return
//     */
//    public static final String getDateTime() {
//        return format(new Date(), DATE_PATTERN.YYYY_MM_DD_HH_MM_SS);
//    }
//
//    /**
//     * 获取当前日期时间字符串（按pattern格式输出）
//     *
//     * @param pattern
//     * @return
//     */
//    public static final String getDateTime(String pattern) {
//        return format(new Date(), pattern);
//    }
//
//    /**
//     * 获取指定日期字符串（按pattern格式输出）
//     *
//     * @param date    指定日期
//     * @param pattern 指定格式
//     * @return
//     */
//    public static final String getDateTime(Date date, String pattern) {
//        return format(date, pattern);
//    }
//
//    /**
//     * 日期计算
//     *
//     * @param date
//     * @param field
//     * @param amount
//     * @return
//     */
//    public static final Date addDate(Date date, int field, int amount) {
//        if (date == null) {
//            return null;
//        }
//        Calendar calendar = Calendar.getInstance();
//        calendar.setTime(date);
//        calendar.add(field, amount);
//        return calendar.getTime();
//    }
//
//    /**
//     * 根据传入时间获得对应当天的开始时间
//     *
//     * @param taskCrtDttm
//     * @return
//     */
//    public static Date calculateStartOfDay(Date taskCrtDttm) {
//        SimpleDateFormat sdf = new SimpleDateFormat(DATE_PATTERN.YYYY_MM_DD);
//        try {
//            String source = sdf.format(taskCrtDttm) + START_TIME;
//            sdf.applyPattern(DATE_PATTERN.YYYY_MM_DD_HH_MM_SS);
//            return sdf.parse(source);
//        } catch (ParseException e) {
//            return null;
//        }
//    }
//
//    /**
//     * 根据传入时间获得对应当天的结束时间
//     *
//     * @param taskCrtDttm
//     * @return 如：taskCrtDttm=2014-08-23 11:55:23 则 return 2014-08-23 23:59:59
//     */
//    public static Date calculateEndOfDay(Date taskCrtDttm) {
//        SimpleDateFormat sdf = new SimpleDateFormat(DATE_PATTERN.YYYY_MM_DD);
//        try {
//
//            String source = sdf.format(taskCrtDttm) + END_TIME;
//            sdf.applyPattern(DATE_PATTERN.YYYY_MM_DD_HH_MM_SS);
//            return sdf.parse(source);
//        } catch (ParseException e) {
//            return null;
//        }
//    }
//
//    /**
//     * 字符串转换为日期
//     *
//     * @param date
//     * @return
//     */
//    @Deprecated
//    public static final Date stringToDate(String date) {
//        return parseToDate(date);
//    }
//
//    /**
//     * 间隔天数
//     *
//     * @param startDate
//     * @param endDate
//     * @return
//     */
//    public static final Integer getDayBetween(Date startDate, Date endDate) {
//        Calendar start = Calendar.getInstance();
//        start.setTime(startDate);
//        start.set(Calendar.HOUR_OF_DAY, 0);
//        start.set(Calendar.MINUTE, 0);
//        start.set(Calendar.SECOND, 0);
//        start.set(Calendar.MILLISECOND, 0);
//        Calendar end = Calendar.getInstance();
//        end.setTime(endDate);
//        end.set(Calendar.HOUR_OF_DAY, 0);
//        end.set(Calendar.MINUTE, 0);
//        end.set(Calendar.SECOND, 0);
//        end.set(Calendar.MILLISECOND, 0);
//
//        long n = end.getTimeInMillis() - start.getTimeInMillis();
//        return (int) (n / (60 * 60 * 24 * 1000L));
//    }
//
//    /**
//     * 间隔月
//     *
//     * @param startDate
//     * @param endDate
//     * @return
//     */
//    public static final Integer getMonthBetween(Date startDate, Date endDate) {
//        if (startDate == null || endDate == null || !startDate.before(endDate)) {
//            return null;
//        }
//        Calendar start = Calendar.getInstance();
//        start.setTime(startDate);
//        Calendar end = Calendar.getInstance();
//        end.setTime(endDate);
//        int year1 = start.get(Calendar.YEAR);
//        int year2 = end.get(Calendar.YEAR);
//        int month1 = start.get(Calendar.MONTH);
//        int month2 = end.get(Calendar.MONTH);
//        int n = (year2 - year1) * 12;
//        n = n + month2 - month1;
//        return n;
//    }
//
//    /**
//     * 间隔月，多一天就多算一个月
//     *
//     * @param startDate
//     * @param endDate
//     * @return
//     */
//    public static final Integer getMonthBetweenWithDay(Date startDate, Date endDate) {
//        if (startDate == null || endDate == null || !startDate.before(endDate)) {
//            return null;
//        }
//        Calendar start = Calendar.getInstance();
//        start.setTime(startDate);
//        Calendar end = Calendar.getInstance();
//        end.setTime(endDate);
//        int year1 = start.get(Calendar.YEAR);
//        int year2 = end.get(Calendar.YEAR);
//        int month1 = start.get(Calendar.MONTH);
//        int month2 = end.get(Calendar.MONTH);
//        int n = (year2 - year1) * 12;
//        n = n + month2 - month1;
//        int day1 = start.get(Calendar.DAY_OF_MONTH);
//        int day2 = end.get(Calendar.DAY_OF_MONTH);
//        if (day1 <= day2) {
//            n++;
//        }
//        return n;
//    }
//
//    public static final Date lastDayOfCurrentMonth() {
//
//        Calendar ca = Calendar.getInstance();
//        ca.setTime(new Date());
//        ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));
//        ca.set(Calendar.HOUR_OF_DAY, ca.getActualMaximum(Calendar.HOUR_OF_DAY));
//        ca.set(Calendar.MINUTE, ca.getActualMaximum(Calendar.MINUTE));
//        ca.set(Calendar.SECOND, ca.getActualMaximum(Calendar.SECOND));
//
//        return ca.getTime();
//    }
//
//    @Deprecated
//    public static final Date getlastDayOfMonth(Date date) {
//        return getLastDateOfMonth(date);
//    }
//
//    @Deprecated
//    public static final Date getlastDayOfPrevMonth(Date date) {
//        return getLastDateOfPrevMonth(date);
//    }
//
//    /**
//     * 获取当前月的最后一天
//     */
//    public static int getLastDayOfMonth(Date date) {
//        Calendar calendar = Calendar.getInstance();
//        calendar.setTime(date);
//        return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
//    }
//
//    /**
//     * 根据参数时间计算当月最后一天
//     *
//     * @param date
//     * @return
//     */
//    public static final Date getLastDateOfMonth(Date date) {
//        Calendar cale = Calendar.getInstance();
//        cale.setTime(date);
//        cale.add(Calendar.MONTH, 1);
//        cale.set(Calendar.DAY_OF_MONTH, cale.getActualMinimum(Calendar.DAY_OF_MONTH));
//        cale.set(Calendar.HOUR_OF_DAY, cale.getActualMinimum(Calendar.HOUR_OF_DAY));
//        cale.set(Calendar.MINUTE, cale.getActualMinimum(Calendar.MINUTE));
//        cale.set(Calendar.SECOND, cale.getActualMinimum(Calendar.SECOND));
//
//        Date endDate = cale.getTime();
//        return endDate;
//    }
//
//    /**
//     * 根据当前时间获取上月最后一天
//     *
//     * @return
//     */
//    public static final Date getLastDateOfPrevMonth(Date date) {
//        Calendar cale = Calendar.getInstance();
//
//        cale.setTime(date);
//        cale.set(Calendar.DAY_OF_MONTH, 1);
//        cale.set(Calendar.HOUR_OF_DAY, -1);
//        cale.set(Calendar.MINUTE, 59);
//        cale.set(Calendar.SECOND, 59);
//
//        Date endDate = cale.getTime();
//        return endDate;
//    }
//
//    public static final Date firstDayOfNextMonth(Date date) {
//        Calendar ca = Calendar.getInstance();
//        ca.setTime(date);
//        ca.add(Calendar.MONTH, 1);
//        ca.set(Calendar.DAY_OF_MONTH, ca.getActualMinimum(Calendar.DAY_OF_MONTH));
//        ca.set(Calendar.HOUR_OF_DAY, ca.getActualMinimum(Calendar.HOUR_OF_DAY));
//        ca.set(Calendar.MINUTE, ca.getActualMinimum(Calendar.MINUTE));
//        ca.set(Calendar.SECOND, ca.getActualMinimum(Calendar.SECOND));
//
//        return ca.getTime();
//    }
//
//    /**
//     * 获得指定日期的前N天 的日期
//     *
//     * @param
//     * @return
//     * @throws Exception
//     */
//    public static Date getNextDay(Date date, int count) {
//        Calendar calendar = Calendar.getInstance();
//        calendar.setTime(date);
//        calendar.add(Calendar.DAY_OF_MONTH, count);// +1今天的时间加一天
//        date = calendar.getTime();
//        return date;
//    }
//
//    /**
//     * 返回距离今天多久,刚刚-几分钟-昨天-前天等
//     *
//     * @param date
//     * @return
//     */
//    public static String fromToday(Date date) {
//        Calendar calendar = Calendar.getInstance();
//        calendar.setTime(date);
//
//        long time = date.getTime() / 1000;
//        long now = System.currentTimeMillis() / 1000;
//        long ago = now - time;
//        if (ago <= ONE_HOUR) {
//            return (ago / ONE_MINUTE) > 5 ? (ago / ONE_MINUTE) + "分钟前" : "刚刚";
//        } else if (ago <= ONE_DAY) {
//            return ago / ONE_HOUR + "小时前";
//        } else if (ago <= ONE_DAY * 2) {
//            return "昨天";
//        } else if (ago <= ONE_DAY * 3) {
//            return "前天";
//        } else if (ago <= ONE_MONTH) {
//            long day = ago / ONE_DAY;
//            return day + "天前";
//        } else if (ago <= ONE_YEAR) {
//            long month = ago / ONE_MONTH;
//            return month + "个月前";
//        } else {
//            long year = ago / ONE_YEAR;
//            return (year > 100 ? "N" : year) + "年前...";
//        }
//    }
//
//    /**
//     * @param startDate
//     * @param endDate
//     * @param days
//     * @return
//     */
//    @SuppressWarnings({"unchecked", "rawtypes"})
//    public static List splitDateSize(Date startDate, Date endDate, int days) {
//        List list = new ArrayList();
//        int daysTime = days * 86400000;// 86400000 一天的毫秒数;
//        try {
//            long start = startDate.getTime();
//            long end = endDate.getTime();
//            list = new ArrayList<SplitDate>();
//            if (end > start) {
//                if (end - daysTime > start) {
//                    long timeGo = start + daysTime;
//                    long timeRest = start;
//                    while (end > timeGo) {
//                        Date[] date = new Date[2];
//                        date[0] = new Date(timeRest);
//                        date[1] = new Date(timeGo);
//                        list.add(date);
//
//                        timeRest = timeRest + daysTime;
//                        timeGo = timeGo + daysTime;
//                    }
//
//                    Date[] date = new Date[2];
//                    date[0] = new Date(timeRest);
//                    date[1] = new Date(end);
//                    list.add(date);
//
//                } else {
//                    Date[] date = new Date[2];
//                    date[0] = new Date(start);
//                    date[1] = new Date(end);
//                    list.add(date);
//                }
//            }
//        } catch (Exception e) {
//            return null;
//        }
//
//        return list;
//    }
//
//    /**
//     * 时间转换
//     *
//     * @param str Thu Dec 07 19:27:03 CST 2017 格式时间
//     * @return 2017-12-07 19:27:03
//     * @throws ParseException
//     */
//    public static String strFormat(String str) throws ParseException {
//        if (StringUtils.isEmpty(str)) {
//            return null;
//        }
//        SimpleDateFormat format = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
//        SimpleDateFormat format1 = new SimpleDateFormat(DATE_PATTERN.YYYY_MM_DD_HH_MM_SS);
//        return format1.format(format.parse(str));
//    }
//
//    /**
//     * 获得指定日期的前/后N天的日期
//     *
//     * @param dataString 日期字符串
//     * @return
//     * @throws Exception
//     */
//    public static String dateStringInterval(String dataString, int num) {
//        Calendar c = Calendar.getInstance();
//        Date date = parseToDate(dataString);
//        if (date != null) {
//            c.setTime(date);
//        }
//
//        int day = c.get(Calendar.DATE);
//        c.set(Calendar.DATE, day + num);
//
//        String dayBefore = new SimpleDateFormat(DATE_PATTERN.YYYY_MM_DD).format(c.getTime());
//        return dayBefore;
//    }
//
//    /**
//     * 指定日期前/后N天的日期时间
//     *
//     * @param dataString 日期字符串
//     * @param day        几天前/-day 几天后/day
//     * @return 指定前/后几天时间
//     * @throws ParseException
//     */
//    public static String dateInterval(String dataString, Integer day) throws ParseException {
//        if (dataString == null || "".equals(dataString)) {
//            return null;
//        }
//        if (day == null || "".equals(day)) {
//            return null;
//        }
//        SimpleDateFormat format = new SimpleDateFormat(DATE_PATTERN.YYYY_MM_DD_HH_MM_SS);
//        Date date = parseToDate(dataString);
//        Calendar calendar = Calendar.getInstance();
//        calendar.setTime(date);
//        calendar.add(Calendar.DAY_OF_MONTH, day);
//        date = calendar.getTime();
//        return format.format(date);
//    }
//
//    /**
//     * 将java.util.Date 格式转换为字符串格式'yyyy-MM-dd HH:mm:ss'(24小时制)<br>
//     * 如Sat May 11 17:24:21 CST 2002 to '2002-05-11 17:24:21'<br>
//     *
//     * @param time Date 日期<br>
//     * @return String 字符串<br>
//     */
//    public static String getDateTimeH24(Date time) {
//        return format(time, DATE_PATTERN.YYYY_MM_DD_HH_MM_SS);
//    }
//
//    /**
//     * 将java.util.Date 格式转换为字符串格式'yyyy-MM-dd HH:mm:ss a'(12小时制)<br>
//     * 如Sat May 11 17:23:22 CST 2002 to '2002-05-11 05:23:22 下午'<br>
//     *
//     * @param time Date 日期<br>
//     * @return String 字符串<br>
//     */
//    public static String getDateTimeH12(Date time) {
//        SimpleDateFormat formatter;
//        formatter = new SimpleDateFormat(DATE_PATTERN.YYYY_MM_DD_KK_MM_SS_AM);
//        String date = formatter.format(time);
//        return date;
//    }
//
//    /**
//     * 取系统当前时间:返回只值为如下形式 2002-10-30 20:24:39
//     *
//     * @return String
//     */
//    public static String getNow() {
//        return getDateTimeH24(new Date());
//    }
//
//    public static String getRandomNo() {
//        SimpleDateFormat formatter = new SimpleDateFormat(DATE_PATTERN.YYYYMMDDHHMMSSS);
//        return formatter.format(new Date()) + Integer.toString((new Random().nextInt(999)));
//    }
//
//    public static String getOrderNo() {
//        SimpleDateFormat formatter = new SimpleDateFormat(DATE_PATTERN.YYYYMMDDHHMMSSS);
//        return formatter.format(new Date()) + Integer.toString((new Random().nextInt(999)));
//    }
//
//    /**
//     * 获取当前日期 这周的第一天
//     *
//     * @return date
//     */
//    @SuppressWarnings("static-access")
//    public static String getWeekHand() {
//        SimpleDateFormat simdf = new SimpleDateFormat("yyyy-MM-dd");
//        Calendar cal = Calendar.getInstance();
//        cal.set(cal.DAY_OF_WEEK, cal.MONDAY);
//        return simdf.format(cal.getTime());
//
//    }
//
//    /**
//     * 当天的0时0分0秒0毫秒所在时刻的毫秒数
//     *
//     * @return
//     */
//    public static final long millisOfStartOfToday() {
//        Calendar c = Calendar.getInstance();
//        c.set(Calendar.HOUR_OF_DAY, 0);
//        c.set(Calendar.MINUTE, 0);
//        c.set(Calendar.SECOND, 0);
//        c.set(Calendar.MILLISECOND, 0);
//        return c.getTime().getTime();
//    }
//
//    /**
//     * 当前的23时59分59秒999毫秒所在时刻的毫秒数
//     *
//     * @return
//     */
//    public static final long millisOfEndOfToday() {
//        Calendar c = Calendar.getInstance();
//        c.set(Calendar.DAY_OF_MONTH, c.get(Calendar.DAY_OF_MONTH) + 1);
//        c.set(Calendar.MINUTE, 0);
//        c.set(Calendar.SECOND, 0);
//        c.set(Calendar.MILLISECOND, 0);
//        return c.getTime().getTime() - 1;
//    }
//
//    /**
//     * 获取小时
//     *
//     * @return
//     */
//    public static String getHour() {
//        SimpleDateFormat formatter;
//        formatter = new SimpleDateFormat("H");
//        String hour = formatter.format(new Date());
//        return hour;
//    }
//
//    /**
//     * 获取当前日返回 <return>Day</return>
//     */
//    public static String getDay() {
//        SimpleDateFormat formatter;
//        formatter = new SimpleDateFormat("d");
//        String day = formatter.format(new Date());
//        return day;
//    }
//
//    /**
//     * 获取周
//     *
//     * @return
//     */
//    public static String getWeek() {
//        SimpleDateFormat formatter;
//        formatter = new SimpleDateFormat("E");
//        String week = formatter.format(new Date());
//        return week;
//    }
//
//    /**
//     * 获取月份
//     *
//     * @return
//     */
//    public static String getMonth() {
//        SimpleDateFormat formatter;
//        formatter = new SimpleDateFormat("M");
//        String month = formatter.format(new Date());
//        return month;
//    }
//
//    /**
//     * 获取年
//     *
//     * @return
//     */
//    public static String getYear() {
//        SimpleDateFormat formatter;
//        formatter = new SimpleDateFormat("yyyy");
//        String year = formatter.format(new Date());
//        return year;
//    }
//
//    /**
//     * 获取指定时间的那天 00:00:00.000 的时间
//     *
//     * @param date
//     * @return
//     */
//    public static Date dayBegin(Date date) {
//        Calendar c = Calendar.getInstance();
//        c.setTime(date);
//        c.set(Calendar.HOUR_OF_DAY, 0);
//        c.set(Calendar.MINUTE, 0);
//        c.set(Calendar.SECOND, 0);
//        c.set(Calendar.MILLISECOND, 0);
//        return c.getTime();
//    }
//
//    /**
//     * 获取指定时间的那天 23:59:59.999 的时间
//     *
//     * @param date
//     * @return
//     */
//    public static Date dayEnd(Date date) {
//        Calendar c = Calendar.getInstance();
//        c.setTime(date);
//        c.set(Calendar.HOUR_OF_DAY, 23);
//        c.set(Calendar.MINUTE, 59);
//        c.set(Calendar.SECOND, 59);
//        c.set(Calendar.MILLISECOND, 999);
//        return c.getTime();
//    }
//
//    /**
//     * 获取当前日期本月的第几天
//     */
//    public static int getDayOfMonth(Date date) {
//        Calendar calendar = Calendar.getInstance();
//        calendar.setTime(date);
//        return calendar.get(Calendar.DAY_OF_MONTH);
//    }
//
//    /**
//     * 获取当前日期是本周的第几天 周一是 1 周日返回7
//     */
//    public static int getDayOfWeek(Date date) {
//        Calendar calendar = Calendar.getInstance();
//        calendar.setTime(date);
//        boolean isFirstSunday = (calendar.getFirstDayOfWeek() == Calendar.SUNDAY);
//        // 获取周几
//        int weekDay = calendar.get(Calendar.DAY_OF_WEEK);
//        // 若一周第一天为星期天，则-1
//        if (isFirstSunday) {
//            weekDay = weekDay - 1;
//            if (weekDay == 0) {
//                weekDay = 7;
//            }
//        }
//
//        return weekDay;
//    }
//
//    /**
//     * 根据日期计算所在周的上下界
//     *
//     * @param date
//     */
//    public static Map<String, Date> getWeekByDate(Date date) {
//        Calendar cal = Calendar.getInstance();
//        cal.setTime(date);
//
//        int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
//        cal.add(Calendar.DATE, (2 - dayOfWeek - 7) % 7);
//        Date startDate = cal.getTime();
//
//        cal.add(Calendar.DATE, 6);
//        Date endDate = cal.getTime();
//
//        Map<String, Date> map = new HashMap<>();
//        map.put("first", startDate);
//        map.put("last", endDate);
//
//        return map;
//    }
//
//    public static Map<String, Date> getWeekByDate(String date) {
//        return getWeekByDate(DateUtil.parseToDate(date));
//    }
//
//    /**
//     * 根据日期计算当月的第一天与最后一天
//     *
//     * @param date
//     * @return
//     */
//    public static Map<String, Date> getMonthByDate(Date date) {
//        Calendar calendar = Calendar.getInstance();
//        calendar.setTime(date);
//        calendar.set(Calendar.DAY_OF_MONTH, 1);
//        Date firstDate = calendar.getTime();
//
//        calendar.add(Calendar.MONTH, 1); // 加一个月
//        calendar.set(Calendar.DATE, 1); // 设置为该月第一天
//        calendar.add(Calendar.DATE, -1); // 再减一天即为上个月最后一天
//        Date lastDate = calendar.getTime();
//
//        Map<String, Date> map = new HashMap<>();
//        map.put("first", firstDate);
//        map.put("last", lastDate);
//        return map;
//
//    }
//
//    public static Map<String, Date> getMonthByDate(String date) {
//        return getMonthByDate(DateUtil.parseToDate(date));
//    }
//
//    public static void main(String[] args) throws ParseException {
//        // List list = splitDateSize(DateUtil.stringToDate("2018-06-110
//        // 19:15:08"),
//        // DateUtil.stringToDate("2018-07-19 15:05:08"), 7);
//        // if (list != null) {
//        // for (int i = 0; i < list.size(); i++) {
//        // Date[] date = (Date[]) list.get(i);
//        // if (date.length > 0) {
//        // System.out.println("from : " + DateUtil.format(date[0], "yyyy-MM-dd
//        // HH:mm:ss") + " to:"
//        // + DateUtil.format(date[1], "yyyy-MM-dd HH:mm:ss"));
//        // }
//        // }
//        // }
//        // System.out.println(strFormat("Thu Dec 07 19:27:03 CST 2017"));
//        // String times = "2018-9-12 9:11:0";
//        // System.out.println(dateInterval(times, -3));
//        // int day = 1000 * 24 * 3600;
//        // System.out.println(day);
//        // SimpleDateFormat sdf = new
//        // SimpleDateFormat(DATE_PATTERN.YYYY_MM_DD_HH_MM_SS);
//        // System.out.println(getlastDayOfPrevMonth(sdf.parse("2018-03-02
//        // 10:23:32")));
//        // System.out.println(getlastDayOfPrevMonth(new Date()));
//        // System.out.println(firstDayOfNextMonth(new Date()));
//        // System.out.println(firstDayOfNextMonth(sdf.parse("2018-04-02
//        // 10:23:32")));
//
//        // System.out.println(getlastDayOfMonth(sdf.parse("2018-01-02
//        // 10:23:32")));
//
//        // Calendar cale = Calendar.getInstance();
//        // cale.add(Calendar.MONTH, 1);
//        // cale.set(Calendar.DAY_OF_MONTH, 1);
//        // cale.set(Calendar.HOUR_OF_DAY,0);
//        // cale.set(Calendar.MINUTE,0);
//        // cale.set(Calendar.SECOND,0);
//        // cale.getTime();
//        // System.out.print(cale.getTime());
//
//        // String deadline = "2018-06-30 12:55:59";
//        // Date date = new Date();
//        // SimpleDateFormat simple = new SimpleDateFormat("yyyy-MM-dd
//        // HH:mm:ss");
//        // date = simple.parse(deadline);
//        // // System.out.println(TestTimes.fromDeadline(date));
//        //
//        // String before = "2018-07-01 13:48:59";
//        // date = simple.parse(before);
//        // System.out.println(DateUtil.fromToday(date));
//        //
//        // String before2 = "2018-07-02 11:10:59";
//        // date = simple.parse(before2);
//        // System.out.println(DateUtil.fromToday(date));
//        //
//        // before2 = "2018-07-02 13:52:09";
//        // date = simple.parse(before2);
//        // System.out.println(DateUtil.fromToday(date));
//        //
//        // before2 = "2018-07-01 01:10:59";
//        // date = simple.parse(before2);
//        // System.out.println(DateUtil.fromToday(date));
//        //
//        // before2 = "2018-06-30 01:10:59";
//        // date = simple.parse(before2);
//        // System.out.println(DateUtil.fromToday(date));
//        //
//        // before2 = "1001-06-10 01:10:59";
//        // date = simple.parse(before2);
//        // System.out.println(DateUtil.fromToday(date));
//
//        Date date = parseToDate(null);
//
//        String dataString = format(new Date(), DATE_PATTERN.YYYY_MM_DD_KK_MM_SS_AM);
//        System.out.println(dataString);
//        date = parseToDate(dataString);
//        System.out.println(getDateTime(date, DATE_PATTERN.YYYY_MM_DD_HH_MM_SS_SSS));
//        // getMonthByDate(date);
//
//    }
//
//    /**
//     * 获取当前时间的上一个月
//     * @return  String 返回上一月  时间格式: yyyy/MM
//     */
//    public static String getLastMonth() {
//        SimpleDateFormat format = new SimpleDateFormat("yyyy/MM");
//        Date date = new Date();
//        Calendar calendar = Calendar.getInstance();
//        calendar.setTime(date); // 设置为当前时间
//        calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 1); // 设置为上一个月
//        date = calendar.getTime();
//        String accDate = format.format(date);
//        return accDate;
//    }
//
//}
